unit Unit61; 

{$mode objfpc}

interface

uses
  Classes, SysUtils, FileUtil, LResources, Forms, Controls, Graphics, Dialogs,
  Menus, DBGrids, sqldb, db, Unit1, Unit62, Unit22, LR_Class, LR_DBSet;

type

  { TForm61 }

  TForm61 = class(TForm)
    Datasource1: TDatasource;
    DBGrid1: TDBGrid;
    frDBDataSet1: TfrDBDataSet;
    frReport1: TfrReport;
    MainMenu1: TMainMenu;
    MenuItem1: TMenuItem;
    MenuItem10: TMenuItem;
    MenuItem2: TMenuItem;
    MenuItem3: TMenuItem;
    MenuItem4: TMenuItem;
    MenuItem5: TMenuItem;
    MenuItem6: TMenuItem;
    MenuItem7: TMenuItem;
    MenuItem8: TMenuItem;
    MenuItem9: TMenuItem;
    SQLQuery1: TSQLQuery;
    procedure FormShow();
    procedure MenuItem10Click(Sender: TObject);
    procedure MenuItem4Click(Sender: TObject);
    procedure MenuItem5Click(Sender: TObject);
    procedure MenuItem7Click(Sender: TObject);
    procedure MenuItem8Click(Sender: TObject);
    procedure MenuItem9Click(Sender: TObject);
    procedure ordenar_grid();
  private
    nombre : string;
    fecha_desde : string;
    fecha_hasta : string;
  public
    { public declarations }
  end; 

var
  Form61: TForm61; 

implementation

{ TForm61 }

procedure TForm61.ordenar_grid();
begin
  if SQLQuery1.Active = True then
    SQLQuery1.Close;

  SQLQuery1.SQL.Text := 'select * from vw_retiro_premios where cln_nombre ilike ''%' + nombre
    + '%'' and rtp_fecha >= ''' + fecha_desde + ''' and rtp_fecha <= ''' + fecha_hasta + ''' order by cln_nombre';

  SQLQuery1.Open;

  DBGrid1.Columns[0].Title.Caption := 'Código';
  DBGrid1.Columns[1].Title.Caption := 'Fecha';
  DBGrid1.Columns[2].Title.Caption := 'Broker';
  DBGrid1.Columns[3].Title.Caption := 'Detalle';
  DBGrid1.Columns[4].Title.Caption := 'Valor';

  DBGrid1.Columns[0].Width := 50;
  DBGrid1.Columns[1].Width := 80;
  DBGrid1.Columns[2].Width := 120;
  DBGrid1.Columns[3].Width := 200;
  DBGrid1.Columns[4].Width := 70;
end;

procedure TForm61.FormShow();
begin
  if SQLQuery1.Active = True then
    SQLQuery1.Close;

  SQLQuery1.DataBase := Form1.PQConnection1;
  SQLQuery1.Transaction := Form1.SQLTransaction1;

  nombre := '%';
  fecha_desde := DateToStr(Date) + ' ' + '00:00';
  fecha_hasta := DateToStr(Date) + ' ' + '23:59';

  ordenar_grid();
end;

procedure TForm61.MenuItem10Click(Sender: TObject);
begin
  frReport1.LoadFromFile('listado_retiro_premios.lrf');
  frReport1.ShowReport;
end;

procedure TForm61.MenuItem4Click(Sender: TObject);
begin
  Form62.ShowModal;
  FormShow;
end;

procedure TForm61.MenuItem5Click(Sender: TObject);
var
  codigo : string;
  QueryString : string;

begin
  codigo := InputBox('Cancelar Premio', ' Ingrese el codigo de entrega de premio a cancelar:', '');

  if codigo <> '' then
  begin
    QueryString := 'delete from retiro_premios where rtp_cdg = ' + codigo;

    Form1.PQConnection1.ExecuteDirect('begin work;');
    Form1.PQConnection1.ExecuteDirect(QueryString);
    Form1.PQConnection1.ExecuteDirect('commit work;');

    ShowMessage('Cancelacion Exitosa!');

    ordenar_grid();
  end;
end;

procedure TForm61.MenuItem7Click(Sender: TObject);
begin
  nombre := InputBox('Filtro por Cliente', 'Ingrese parte del nombre del cliente:', '');
  if nombre <> '' then
    ordenar_grid();
end;

procedure TForm61.MenuItem8Click(Sender: TObject);
begin
  Form22.Showmodal;

  fecha_desde := Form22.fecha_desde;
  fecha_hasta := Form22.fecha_hasta;

  ordenar_grid;
end;

procedure TForm61.MenuItem9Click(Sender: TObject);
begin
  nombre := '%';
  fecha_desde := DateToStr(Date) + ' ' + '00:00';
  fecha_hasta := DateToStr(Date) + ' ' + '23:59';

  ordenar_grid();
end;

initialization
  {$I unit61.lrs}

end.

